from flask import jsonify, request, current_app, g
from flask import session

from app import db
from app.models import User
from . import profile_blue
from app.utils import constants
from app.utils.commons import user_login_data
from app.utils.image_storage import image_storage
from app.utils.response_code import RET

from flask import current_app, jsonify
from flask import g
from flask import request
from app.models import User
from app.utils.commons import user_login_data
from app.utils.response_code import RET
from . import profile_blue
def demo_kang():
    """
    康文举
    2.1 获取用户信息
    2.2 用户名修改
    :return:
    """
# 2.2 用户名修改
# 请求url: /api/v1.0/user/name
# 请求方式:POST
# 请求参数:POST请求有参数,name
# 返回值:errno,errmsg
@profile_blue.route('/user/name', methods=['POST'])
@user_login_data
def user_name():

    # 0.1 使用g变量
        if not g.user:
            return jsonify(errno=RET.NODATA,errmsg="此用户不存在")

        # 2 获取参数
        name = request.json.get("name")

        # 3 校验参数
        if not name:
            return jsonify(errno=RET.PARAMERR, errmsg="参数不全")

        # 4 修改数据
        try:
            g.user.name = name
            db.session.commit()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg="修改用户名失败")

        #　5 返回响应
        return jsonify(errno=RET.OK, errmsg="修改成功")



# 2.1获取用户信息
# 请求url: /api/v1.0/user
# 请求方式:GET
# 请求参数:无
# 返回结果

# 获取用户信息
@profile_blue.route('/user')
@user_login_data
def user():
    # user_id =session['user_id']

    # 判断用户是否存在
    if not g.user:
        return jsonify(errno=RET.NODATA, errmsg="用户不存在")

    # # 根据用户id查找数据库，获取所有数据
    # try:
    #     user = User.query.filter_by(id=user_id).first()
    # except Exception as e:
    #     current_app.logger.error(e)
    #     return jsonify(errno=RET.DBERR, errmsg="获取用户信息失败")
    #
    # from app.utils.constants import QINIU_DOMIN_PREFIX
    # data = {
    #     'mobile': g.user.mobile,
    #     'name': g.user.name,
    #     'avatar_url': QINIU_DOMIN_PREFIX + g.user.avatar_url
    # }
    data = g.user.to_dict()
    return jsonify(errno=RET.OK, errmsg="成功", data=data)



def demo_li():
    """
    李相田
    上传个人头像
    :return:
    """

"""
2.3上传个人头像
1请求地址:/api/v1.0/user/avatar
2请求方式:POST
3请求参数: avatar
4参数名 必选 类型 说明
avatar true file 头像文件
5返回结果
"""
@profile_blue.route('/avatar', methods=['POST'])
@user_login_data
def avatar():
    # 1.判断用户是否登陆
    if not g.user:
        return jsonify(errno=RET.SESSIONERR, errmsg="用户未登陆")

    # 2.获取请求参数
    avatar = request.files.get("avatar")

    # 3.校验 参数  为空校验
    if not avatar:
        return jsonify(errno=RET.NODATA, errmsg="图片不可为空")

    # 4.上传图片,判断是否上传成功
    # 4.1 图片读为二进制
    try:
        image_name = image_storage(avatar.read())
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg="七牛云异常")

    # 5. 将图片设置到用户对象
    g.user.avatar_url = image_name


    # 6. 返回响应
    data = {
        "avatar_url":constants.QINIU_DOMIN_PREFIX + image_name
    }
    return jsonify(errno=RET.OK, errmsg="上传成功", data=data)

